package ro.flashbite.game_engine.data
{
	import ro.flashbite.game_engine.data.intefaces.IScoreObject;
	import ro.flashbite.interfaces.IDestroyable;
	
	public final class ScoreObject implements IScoreObject, IDestroyable
	{
		private var _score			:	uint;
		private var _locationName	:	String;
		
		// ================================================================================================================================
		// CONSTRUCTOR
		// ================================================================================================================================
		
		public function ScoreObject(score:uint, locationName:String)
		{
			_constructor(score, locationName);
		}
		private function _constructor(score:uint, locationName:String):void
		{
			_score = score;
			_locationName = locationName;
		}
		
		// ================================================================================================================================
		// CLONE
		// ================================================================================================================================
		
		public function clone():ScoreObject { return new ScoreObject(_score, _locationName); }
		
		// ================================================================================================================================
		// DESTRUCTOR
		// ================================================================================================================================
		
		public function destroy():void
		{
			_locationName = null;
		}

		// ================================================================================================================================
		// PUBLIC STATIC
		// ================================================================================================================================
		
		public static function sortByScore(scoreObj1:ScoreObject, scoreObj2:ScoreObject):int
		{
			var score1:uint = scoreObj1.score,
				score2:uint = scoreObj2.score;
			
			if (score1 > score2) return -1;
			else if (score1 < score2) return 1;
			else return 0;
		}
		
		// ================================================================================================================================
		// IScoreObject
		// ================================================================================================================================
		
		public function get score()				: uint { return _score;  }
		public function set score(value:uint)	: void { _score = value; }

		public function get locationName()				: String { return _locationName;  }
		public function set locationName(value:String)	: void 	 { _locationName = value; }
	}
}